package com.fashop.service.impl;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.fashop.bean.Result;
import com.fashop.bean.beacon.BuscarMensajeBeacon;
import com.fashop.bean.mensaje.ListadoMensajeBeacon;
import com.fashop.bean.mensaje.MensajeOut;
import com.fashop.dao.impl.MensajeDaoImpl;
import com.fashop.enumeration.StateTransactionEnum;
import com.fashop.jpa.Mensaje;
import com.fashop.mapper.GenericMapper;
import com.fashop.service.BeaconService;
import com.fashop.service.MensajeService;

@Service("mensajeServiceImpl")
public class MensajeServiceImpl implements MensajeService{
	
	@Resource(name ="beaconServiceImpl")
	private BeaconService beaconService;
	@Resource(name = "mensajeDaoImpl")
	private MensajeDaoImpl MensajeDao;
	@Resource(name = "listadoMensajeMapperOut")
	private GenericMapper <List<Mensaje>,List<MensajeOut>> listadoMjeBeaconMapper;
	
	public ListadoMensajeBeacon getMensajeBeacon(BuscarMensajeBeacon msjBeacon) {
		ListadoMensajeBeacon listadoRespuesta = new ListadoMensajeBeacon();
		try{
			Long idBeacon 			= beaconService.getIdBeacon(msjBeacon.getsUUid(),msjBeacon.getProximidad() );
			//Actualizamos el contador del beacon	
			beaconService.actualizarContador(idBeacon);
			//
			List<Mensaje> mensaje				  = MensajeDao.MsjeBeaconSexoEdad(idBeacon, msjBeacon.getSexo(), msjBeacon.getEdad());
			List<MensajeOut> mjeOutMapper		  = listadoMjeBeaconMapper.map(mensaje);
			Result result = new Result(StateTransactionEnum.GET.toString());
			if(mjeOutMapper==null){
				result.setEstado(StateTransactionEnum.ERROR.toString());
			}
			listadoRespuesta.setMensajes(mjeOutMapper);
			listadoRespuesta.setResult(result);
			//Actualizamos la vista del mensajes
			this.actualizaVista(listadoRespuesta);
		}catch(Exception e){}
		
		return listadoRespuesta;	
	}
	private void actualizaVista(ListadoMensajeBeacon listaMjes){
		List<MensajeOut> mjeOut=listaMjes.getMensajes();
		for(MensajeOut mje: mjeOut){
			MensajeDao.actualizarVista(mje.getIdmensaje());
		}
	}
	public MensajeOut crear() {
		// TODO Auto-generated method stub
		return null;
	}

	public MensajeOut modificar() {
		// TODO Auto-generated method stub
		return null;
	}

	public MensajeOut eliminar() {
		// TODO Auto-generated method stub
		return null;
	}
	
	

}
